package nio.one;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

/*
    通道Channel常用的实现类：
        1.FileChannel:用于读写、映射、操作文件的通道
        2.DatagramChannel:通过UDP读写网络中的数据
        3.SocketChannel:通过TCP读写网络中数据
        4.ServerSocketChannel:可以监听一个TCP连接，每有一个TCP连接进来的时候，都会新建一个SocketChannel
 */
public class ChannelTest {
    //测试写文件
    public static void main(String[] args) {
        try {
            //获取文件通道
            FileOutputStream fos = new FileOutputStream("E:\\mycode\\io\\src\\nio\\one/test.txt");
            FileChannel fileChannel = fos.getChannel();
            //创建缓冲区
            ByteBuffer buffer = ByteBuffer.allocate(1024);
            //向缓冲区添加数据
            buffer.put("hello world!".getBytes());
            //将缓冲区切换为读模式
            buffer.flip();
            //读取缓冲区的数据写入到通道中
            fileChannel.write(buffer);
            //关闭通道
            fileChannel.close();
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
